// Copyright (C) 2019-2023 Aleo Systems Inc.
// This file is part of the snarkOS library.

// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at:
// http://www.apache.org/licenses/LICENSE-2.0

// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

use snarkos_node::Node;
use snarkvm::prelude::Network;

use ratatui::{
    layout::{Constraint, Direction, Layout, Rect},
    style::{Color, Style},
    text::Span,
    widgets::{canvas::Canvas, Block, Borders},
    Frame,
};

pub(crate) struct Overview;

impl Overview {
    pub(crate) fn draw<N: Network>(&self, f: &mut Frame, area: Rect, _node: &Node<N>) {
        // Initialize the layout of the page.
        let chunks = Layout::default()
            .direction(Direction::Vertical)
            .constraints([Constraint::Percentage(10), Constraint::Percentage(70), Constraint::Max(2)].as_ref())
            .split(area);

        let canvas = Canvas::default().block(Block::default().borders(Borders::ALL).title("Block")).paint(|_ctx| {
            // ctx.draw(&ball);
        });
        f.render_widget(canvas, chunks[0]);

        let canvas = Canvas::default().block(Block::default().borders(Borders::ALL).title("Peers")).paint(|_ctx| {
            // ctx.draw(&ball);
        });
        f.render_widget(canvas, chunks[1]);

        let canvas = Canvas::default().block(Block::default().borders(Borders::ALL).title("Help")).paint(|ctx| {
            ctx.print(0f64, 0f64, Span::styled("Press ESC to quit", Style::default().fg(Color::White)));
        });
        f.render_widget(canvas, chunks[2]);
    }
}
